package gui.logado.minhaconta;

import conexao.Http;
import conexao.HttpData;
import conexao.HttpListener;
import java.io.DataInputStream;
import javax.microedition.lcdui.*;
import recados.Recados;

public class TrocarSenha extends Form implements CommandListener, HttpListener {

    private final Recados midlet;
    private final Command cmdVoltar;
    private final Command cmdSalvar;
    private final TextField campoNovaSenha;
    private final TextField campoComfirmaSenha;
    private final TextField campoSenha;

    public TrocarSenha(Recados midlet) {
        super("Trocar Senha");
        this.midlet = midlet;

        cmdVoltar = new Command("Voltar", Command.BACK, 0);
        cmdSalvar = new Command("Salvar", Command.OK, 1);

        campoSenha = new TextField("Senha Antiga:", null, 20, TextField.PASSWORD);
        campoNovaSenha = new TextField("Nova Senha:", null, 20, TextField.PASSWORD);
        campoComfirmaSenha = new TextField("Repetir Senha:", null, 20, TextField.PASSWORD);

        append(campoSenha);
        append(campoNovaSenha);
        append(campoComfirmaSenha);

        addCommand(cmdVoltar);
        addCommand(cmdSalvar);

        setCommandListener(this);
    }

    public void commandAction(Command c, Displayable d) {
        if (c == cmdVoltar) {
            Recados.setCurrent(midlet.getAvancado());
        } else if (c == cmdSalvar) {

            if (campoSenha.size() < 1 || campoNovaSenha.size() < 1 || campoComfirmaSenha.size() < 1) {
                Recados.setCurrent(new Alert("Erro", "Preencha os campos", null, AlertType.ERROR), this);
                return;
            }

            if (!campoSenha.getString().equals(midlet.getLoginConfig().getSenha())) {
                Recados.setCurrent(new Alert("Erro", "Senha Incorreta", null, AlertType.ERROR), this);
                return;
            }

            String s1 = campoNovaSenha.getString();
            String s2 = campoComfirmaSenha.getString();

            if (!s1.equals(s2)) {
                Recados.setCurrent(new Alert("Erro", "Senhas não conferem", null, AlertType.ERROR), this);
                return;
            }
            run();
        }
    }

    public void run() {
        Http http = new Http("Mudando Senha");
        HttpData dados = new HttpData();

        dados.setPagina("/troca_senha.php");
        http.setListener(this);

        dados.put("nome", midlet.getLoginConfig().getNome());
        dados.put("senha", midlet.getLoginConfig().getSenha());
        dados.put("nova", campoNovaSenha.getString());

        http.setHttpData(dados);

        Recados.setCurrent(http);

        http.doPost(false);
    }

    public void requisicaoCancelada() {
        Recados.setCurrent(this);
    }

    public void falhaRequisiçao(String mensagem) {
        Recados.setCurrent(new Alert("Erro", mensagem, null, AlertType.ERROR), this);
    }

    public void requisicaoConcluida(DataInputStream in) {
        String primeiraLinha = Http.readLine(in);
        String segundaLinha = Http.readLine(in);
        if (primeiraLinha.equals("erro")) {

            Recados.setCurrent(new Alert("Erro", segundaLinha, null, AlertType.ERROR), midlet.getAvancado());
        } else if (primeiraLinha.equals("ok")) {
            midlet.getLoginConfig().setSenha(campoNovaSenha.getString());
            midlet.getLogin().campoSenha.setString(campoNovaSenha.getString());
            boolean[] selec = new boolean[1];
            midlet.getLogin().cg.getSelectedFlags(selec);
            if (selec[0]) {
                midlet.getConfig().salva();
            }

            Recados.setCurrent(new Alert("Sucesso", segundaLinha, null, AlertType.ERROR), midlet.getAvancado());
        }
    }
}
